package org.ymf.service;

import com.github.pagehelper.PageInfo;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import org.ymf.entity.Chart;
import com.baomidou.mybatisplus.extension.service.IService;
import org.ymf.vo.ChartVo;

/**
 * <p>
 * 图表信息表 服务类
 * </p>
 *
 * @author Malphite
 * @since 2023-08-01
 */
public interface ChartService extends IService<Chart> {

    /**
     * 分页查询图表信息表
     * @param vo        可选条件 图表名称(name)、 开始时间(startTime)、结束时间(endTime)、
     * @return          图表信息表分页信息
     */
    PageInfo<Chart> pageChart(ChartVo vo);

    /**
     * 列表查询图表信息表
     * @param vo        可选条件 图表名称(name)、 开始时间(startTime)、结束时间(endTime)、
     * @return          图表信息表列表信息
     */
    List<Chart> listChart(ChartVo vo);

    /**
     * excel导入图表信息表
     * @param file       文件源
     * @param objects    空的 Chart 泛型的 arrayList
     * @param request    请求对象
     * @return           已经插入的list集合
     */
    List<Chart> excelChart(MultipartFile file, List<Chart> objects, HttpServletRequest request);

    /**
     * 添加图表信息表基础信息
     * @param chart       图表信息表信息
     * @param request   请求对象
     * @return          成功or失败
     */
    boolean addChart(MultipartFile multipartFile, Chart chart, HttpServletRequest request);

    /**
     * 添加图表信息表基础信息（异步请求）
     * @param chart       图表信息表信息
     * @param request   请求对象
     * @return          成功or失败
     */
    boolean addChartSync(MultipartFile multipartFile, Chart chart, HttpServletRequest request);

    /**
     * 更新图表信息表基础信息
     * @param chart       图表信息表信息, 主键信息必填
     * @return          成功or失败
     */
    boolean updateChart(Chart chart);

    /**
     * 删除图表信息表基础信息
     * @param chart       图表信息表信息, 主键信息必填
     * @return          成功or失败
     */
    boolean deleteChart(Chart chart);

    /**
     * 图表信息表excel导出
     * @param vo  页面传入参数(name:图表名称;startTime:开始时间;endTime:结束时间 )
     * @param response 响应对象
     * @return   无返回值，通过响应对象响应信息
     * @throws IOException  调用方法可能发生io异常等
     */
    void exportChart(ChartVo vo, HttpServletResponse response) throws IOException;

    /**
     * 分页查询图表信息表 => 根据 lasticsearch 查询信息
     * @param vo        可选条件 图表名称(name)、 开始时间(startTime)、结束时间(endTime)、
     * @return          图表信息表分页信息
     */
    PageInfo<Chart> pageChartEs(ChartVo vo);

}
